package com.cy.pj.modules.mapper;

import com.cy.pj.core.annotation.PlatformTag;
import com.cy.pj.core.annotation.PlatformTagIgnore;
import com.cy.pj.modules.entity.Sku;
import com.cy.pj.modules.vo.SkuVo;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Select;
import org.apache.ibatis.annotations.Update;

import java.util.List;


/**
 * 商品货品Mapper接口
 *
 * @author kiven
 * @date 2023-02-09
 */
@Mapper
@PlatformTag
public interface SkuMapper
{
    /**
     * 查询商品货品
     *
     * @param id 商品货品ID
     * @return 商品货品
     */
    @PlatformTagIgnore
    public Sku selectSkuById(Long id);

    /**
     * 查询商品货品列表
     *
     * @param sku 商品货品
     * @return 商品货品集合
     */
    public List<Sku> selectSkuList(Sku sku);

    /**
     * 新增商品货品
     *
     * @param sku 商品货品
     * @return 结果
     */
    @PlatformTagIgnore
    public int insertSku(Sku sku);

    /**
     * 修改商品货品
     *
     * @param sku 商品货品
     * @return 结果
     */
    @PlatformTagIgnore
    public int updateSku(Sku sku);

    /**
     * 删除商品货品
     *
     * @param id 商品货品ID
     * @return 结果
     */
    @PlatformTagIgnore
    public int deleteSkuById(Long id);

    /**
     * 批量删除商品货品
     *
     * @param ids 需要删除的数据ID
     * @return 结果
     */
    @PlatformTagIgnore
    public int deleteSkuByIds(String[] ids);
    @PlatformTagIgnore
    SkuVo selectSkuSpuNameById(Long id);
    @PlatformTagIgnore
    @Update("update fz_sku set number=#{number} where id = #{id}")
    int updateSkuNumberBySkuId(Sku sku);

    @PlatformTagIgnore
    @Select("select * from fz_sku where id = #{id} for update")
    Sku selectSkuByIdForUpdate(Long id);

    @PlatformTagIgnore
    @Select("select * from fz_sku where spu_id = #{spuId} and shop_id = #{shopId} and specifications =#{specifications}")
    Sku selectSkuByShopIdAndSpecificationsAndSpu(Sku sku1);
}
